package com.atguigu05.method_more._03valuetransfer.exer2;

/**
 * ClassName: test
 * Description:
 *数组排序，可以指明排序的方式（从小到大、从大到小）
 * @Author liu
 * @Create 2024/8/22 12:17
 * @Version 1.0
 */

public class test {
    public static void main(String[] args) {
        algorithm p1 = new algorithm();
        int[] arr = new int[]{24,57,21,43,67,12,43};

         p1.sort(arr, "desc");
         p1.print(arr);




    }

}
//冒泡排序
class algorithm{
    /**
     * 针对于数组进行排序操作
     * @param arr 待排序的数组
     * @param sortMethod  asc:升序   desc：降序
     */
    public void sort(int[] arr,String sortMethod){
        if("asc".equals(sortMethod)){//if(sortMethod.equals("asc")){ //ascend:升序
            for(int j = 0;j < arr.length - 1;j++){
                for (int i = 0; i < arr.length - 1 - j; i++) {
                    if(arr[i] > arr[i + 1]){
                        //交互arr[i] 和 arr[i + 1]
//                        int temp = arr[i];
//                        arr[i] = arr[i + 1];
//                        arr[i + 1] = temp;
                        //错误的：
//                        swap(arr[i],arr[i + 1]);

                        //正确的：
                        swap(arr,i,i+1);
                    }

                }
            }
        }else if("desc".equals(sortMethod)){
            for(int j = 0;j < arr.length - 1;j++){
                for (int i = 0; i < arr.length - 1 - j; i++) {
                    if(arr[i] < arr[i + 1]){
                        //交互arr[i] 和 arr[i + 1]
//                        int temp = arr[i];
//                        arr[i] = arr[i + 1];
//                        arr[i + 1] = temp;
                        //错误的：
//                        swap(arr[i],arr[i + 1]);

                        //正确的：
                        swap(arr,i,i+1);
                    }

                }
            }
        }else{
            System.out.println("你输入的排序方式有误");
        }

    }

//    public void swap(int i,int j){
//        int temp = i;
//        i = j;
//        j = temp;
//    }

    private void swap(int[] arr,int i,int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }



    public void print(int[] arr){ //[12,231,34]
        System.out.print("[");

        for (int i = 0; i < arr.length; i++) {
            if(i == 0){
                System.out.print(arr[i]);
            }else{
                System.out.print("," + arr[i]);
            }
        }

        System.out.println("]");
    }

}
